1. Field of the Invention
The present invention relates to a color management system that maps from a source color space to a destination color space using a look-up table (LUT), and more particularly the invention relates to the population of cells in the LUT using a neural network for color values outside the spectrum locus.
2. Description of the Related Art
One function of color management systems is to provide a high-fidelity color mapping of color values in a source color space to corresponding color values in a destination color space. Often, color management systems will utilize a look-up table (LUT), such as a three-dimensional LUT, generally in correspondence to the dimensionality of the source color space, with cells arranged on a regular or irregular grid. Each cell is populated with three or more color values, generally in correspondence to the dimensionality of the destination color space. Because the color values in the source color space typically do not fall precisely within any one particular cell of the LUT, interpolation such as tetrahedral interpolation is usually applied so as to obtain a color value in the destination color space that provides a high-fidelity reproduction of the corresponding color value in the source color space.
As measured relative to the full gamut of human vision, color spaces traditionally employed in the computer industry have a rather limited gamut. This is illustrated in FIG. 1, which is a diagrammatic view for explaining the size of the gamut of some color spaces. FIG. 1 shows the relationship between the gamut for sRGB color space 1 relative to the full gamut of human vision, which is known as the “spectrum locus” and is designated at 2. Diagrammatically, the spectrum locus is represented by the familiar closed-horseshoe shape of a CIEXYZ chromaticity diagram.
From FIG. 1, it can be appreciated that the sRGB color space covers only a small portion of the full gamut of human vision. Likewise, other widely used color spaces such as AdobeRGB, which is larger than sRGB, still cover only a small portion of the full gamut of human vision, as defined by the spectrum locus 2.
In an effort to overcome these difficulties, larger color spaces have been defined. As one example, scRGB is a color space that is larger than sRGB color space, in the sense that the gamut of scRGB is larger than sRGB. The sRGB color space is depicted at 3 in FIG. 1. The scRGB color space is sometimes called the “sRGB64” color space.
Because of the size of the color spaces defined by these larger color spaces, it is numerically possible to select values for each of the components that results in a color that is not within the spectrum locus. FIG. 2 illustrates this situation, and highlights problems caused by it.
FIG. 2 depicts a simplified, two-dimensional LUT 10 having plural cells such as cell 11. The cells of LUT 10 are shown as if they were arranged on a regular grid, but an irregular grid spacing is also possible. The input axes of LUT 10 (here, red and green axes) represent a color value in a source color space. The cell values of LUT 10, such as cell 11, represent the corresponding color values in the destination color space. LUT 10 thus provides a mapping from color values in a source color space to corresponding color values in a destination color space.
In use, there is an identification of cells that are adjacent to a color value in the source color space. The color values in these cells are then interpolated so as to obtain a corresponding color value in the destination color space.
In FIG. 2, dashed line 12 represents the boundaries of the spectrum locus, that is, the boundary of the full gamut of human vision. Colors to the upper right of dashed line 12 are visualizable or “see-able” colors, in the sense that they fall within the spectrum locus. Color values to the lower left of dashed line 12 fall outside the spectrum locus, and thus are not visualizable or “see-able”.
Cells that fall outside the spectrum locus are marked with an “x”, whereas cells within the spectrum locus are marked with an “o”. For color values and LUT cells that fall completely outside the spectrum locus, such as the color values signified by reference numeral 15, there is no need to populate the adjacent cells of LUT 10. This is because such color values, while numerically possible given the large size of the color space, are not encountered in practical situations. On the other hand, for color values like that signified at reference numeral 16, the color values are completely inside the spectrum locus 12. However, because of the position of color 16 near the edge of spectrum locus 12, and the need to interpolate from “x”-marked cells adjacent color 16, there is a corresponding need to populate cells that are outside of spectrum locus 12.